import javax.swing.*;

import java.awt.*;

public class FinestraJoc extends JFrame {

	private static final long serialVersionUID = 1L; 	//Inicialitzem les variables per a la finestra
	private JPanel taulellbotons = new JPanel();		//El panell per posar els botons,
	private JButton[][] taula;							//Una taula de botons (cadascun per a una Casella)
	private Tauler taulerjoc;							//El tauler de la partida
	private Jugador jug;								//Un jugador per a assignar-li els punts
	private String fraseActual;							//La frase que portem desbloquejada, i
	private String fraseAmagada;						//La frase amagada sencera
	private int width, height;							//Una altura i amplada temporals
	private JTextField texte = new JTextField();		//I un TextField per mostrar la paraula descoberta

	public FinestraJoc(String titol, Tauler tauler, String frase) {

		super(titol);

		int i, j;
		taulerjoc = tauler;								//Copiem el tauler de joc

		width = tauler.getWidth();						//I agafem les seves mides
		height = tauler.getHeight();

		taula = new JButton[height][width];				//Per crear la taula de botons

		AccioBotoPartida accioBoto = new AccioBotoPartida(this);					//Programem l'acció del botó

		Container container = getContentPane();
		container.setLayout(new BorderLayout());									//I preparem el contenidor per als botons
		taulellbotons.setLayout(new GridLayout(height, width));						//assignant-li les mides que ja tenim al panell
		for (i = 0; i < height; i++) {
			for (j = 0; j < width; j++) {
				taula[i][j] = new JButton(tauler.getCasella(i, j).getEtiqueta());	//Agafem totes les caselles i les creem amb l'etiqueta que han de tenir
				taula[i][j].setBackground(Color.black);								//Assignem els colors per a la casella
				taula[i][j].setForeground(Color.white);
				taula[i][j].setName(String.valueOf(i) + "," + String.valueOf(j));	//I programem el nom per a indicar la posició de la casella
				taula[i][j].addActionListener(accioBoto);							//Afegim l'acció i ja tenim el botó preparats
				taulellbotons.add(taula[i][j]);										//Així que l'afegim al panell
			}
		}
		i = tauler.getFilActual();													//Guardem la columna i fila de la casella inicial
		j = tauler.getColActual();
		taula[i][j].setBackground(Color.green);										//I la pintem de verd

		container.add(taulellbotons, BorderLayout.NORTH);							//Posem els botons a dalt i el text a baix
		container.add(texte, BorderLayout.SOUTH);

		fraseAmagada = frase;														//Agafem la frase amagada
		fraseActual = new String(fraseAmagada.substring(0, 1));						//I li assignem la primera lletra a la frase actual
		
		jug = new Jugador(0);														//Creem un jugador amb 0 punts

		texte.setText("Frase: " + fraseActual);										//Escrivim la primera lletra

		setDefaultCloseOperation(EXIT_ON_CLOSE);									//I acabem els detalls de la finestra
		pack();

		// Fem la finestra visible.
		setVisible(true);
	}

	public Tauler getTaulell() {
		return taulerjoc;
	}

	public Jugador getJugador() {
		return jug;
	}

	public void afegeixLletra(String lletra) {
		fraseActual = fraseActual.concat(lletra);
		texte.setText("Frase descoberta: " + fraseActual);
	}

	public int getWidthA() {
		return width;
	}

	public int getHeightA() {
		return height;
	}

	public boolean comprobaFinal() {
		if (fraseActual.equals(fraseAmagada))
			return true;
		else
			return false;
	}

}